Java is general purpose, concurrent, class-based, and object-oriented programming language. It is specifically designed to have as few implementation dependencies as possible. It is intended to let application developers “write once, run anywhere”. The Java Platform includes a Java Virtual Machine (JVM) which can run byte code. Applications in the Java language are compiled to byte code which is, in turn, interpreted by the JVM. JVM allows a programmer to implement other programming languages on top of the Java Platform, as long as those other languages are able to output byte code. As a result, programming languages other than Java can be run by the JVM. The advantage of having different languages running on the Java Platform is so that the features of those languages can benefit from the huge Java ecosystem, so that the applications of those programming languages can access standard libraries written in Java and vice versa.
One such different programming language is the Ruby programming language. Ruby is a dynamic, interpreted, open-source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write. JRuby is the implementation of the Ruby programming language that can run Ruby applications on the JVM. Ruby is a particular advantageous programming language in the field of Voice over Internet Protocol (VoIP). VoIP provides for converged telephony services and other media services (e.g., voice, data, video, etc.) over the web. Ruby allows a programmer to take full advantage of VoIP services because there is no programming stack required in Ruby. With Ruby there is no need to recompile or redeploy as changes to the Ruby source code are taken live, thereby shortening the development lifecycle.
However, Ruby does not provide full control over its ability to provide VoIP services. Presently, there are two frameworks in Ruby for VoIP services. One is the Sipper framework, which is a test framework to test Session Initial Protocol (SIP) and converged Web applications. Unfortunately, the Sipper framework does not allow a programmer to create applications or VoIP services. The other Ruby framework is the Adhersion framework which allows the use of Asterisk (an open-source communication platform that acts as a gateway to bridge SIP to standard telephony networks) to create VoIP services. However, Adhersion is limited to Asterisk only and cannot interact directly with SIP or other protocols, thereby limiting the programmer's ability to create VoIP services.
As a result, the integration of JRuby in a Java environment allowing access to the SIP Servlets specification and other telecommunication specifications, such as JSR 309, would be beneficial.